Awesome REST
      
    
    
      A collaborative list of great resources about RESTful API architecture,
      development, test, and performance. Feel free to contribute to this
      on-going list.
    
    
    Design
    
      - 
        Architectural Styles and the Design of Network-based Software
          Architectures
        - Roy Fielding’s dissertation defining REST
      
 
      - 
        HTTP API design guide extracted from work on the Heroku Platform
          API
      
 
      - 
        Best Practices for Designing a Pragmatic RESTful API
      
 
      - 
        How to design a REST API?
        - Full guide tackling security, pagination, filtering, versioning,
        partial answers, CORS, etc.
      
 
      - 
        Richardson Maturity Model
        - Explained by Martin Fowler, originally presented by Leonard Richardson
        at the
        QCon 2008.
      
 
      - 
        Enterprise Integration Using REST
        - Discusses the constraints and flexibility that you have with nonpublic
        APIs, and lessons learned from doing large scale RESTful integration
        across multiple teams.
      
 
      - 
        HATEOAS -
        Clear explanation on what HATEOAS is, and why you should use it.
      
 
      - 
        How to GET a cup of coffee
      
 
      - 
        REST API Tutorial -
        RestApiTutorial.com is dedicated to tracking REST API best practices and
        making resources available to enable quick reference and self education
        for the development crafts-person.
      
 
      - 
        Microsoft REST API Guidelines
        - The Microsoft REST API Guidelines, as a design principle, encourages
        application developers to have resources accessible to them via a
        RESTful HTTP interface.
      
 
      - 
        API-Security-Checklist
        - Best practices about REST API security
      
 
    
    Standards
    
      - 
        JSON API - Standard for building APIs
        in JSON.
      
 
      - 
        RAML - Simple and succinct way to
        describe RESTful API.
      
 
      - 
        JSend - Simple
        specification that lays down some rules for how JSON responses from web
        servers should be formatted.
      
 
      - 
        OData - Open protocol to allow the
        creation and consumption of queryable and interoperable RESTful APIs.
        Quite complex.
      
 
      - 
        HAL -
        Simple format that gives a consistent and easy way to hyperlink between
        resources in your API (see: HATEOAS).
      
 
      - 
        JSON-LD - Standard for describing
        Linked Data and hypermedia relations in JSON (W3C).
      
 
      - 
        Hydra - Vocabulary for
        Hypermedia-Driven Web APIs (W3C).
      
 
      - 
        Schema.org - Collection of schemas
        describing common data models.
      
 
      - 
        OpenAPI - Formerly known as the
        Swagger Specification, OpenAPI specifcation is the world’s most popular
        description format for defining Restful APIs.
      
 
    
    Clients
    PHP Clients
    
      - 
        Guzzle - HTTP
        client and framework for consuming RESTful web services.
      
 
      - 
        Buzz - Another
        lightweight HTTP client.
      
 
      - 
        unirest for PHP -
        Simplified, lightweight HTTP client library.
      
 
    
    JavaScript Clients
    
      - 
        restangular -
        AngularJS service to handle REST API properly and easily.
      
 
      - 
        restful.js - JS
        client for interacting with server-side RESTful resources.
      
 
      - 
        traverson - A
        Hypermedia API/HATEOAS Client for Node.js and the Browser
      
 
      - 
        raml-client-generator
        - Generates static client libs for js.
      
 
    
    Node.js Clients
    
    Ruby Clients
    
      - 
        RESTClient -
        Simple HTTP and REST client for Ruby, inspired by microframework syntax
        for specifying actions.
      
 
      - 
        Spyke - Interact with REST
        services in an ActiveRecord-like manner.
      
 
      - 
        excon - Usable, fast,
        simple Ruby HTTP 1.1. It works great as a general HTTP(s) client and is
        particularly well suited to usage in API clients.
      
 
      - 
        httparty - Makes
        HTTP fun again!
      
 
      - 
        Net::HTTP
        - Net::HTTP provides a rich library which can be used to build HTTP
        user-agents.
      
 
      - 
        raml-ruby-client-generator
        - Auto generate API client from a RAML file.
      
 
    
    Go Clients
    
      - 
        gopencils - Small and
        simple package to easily consume REST APIs.
      
 
      - 
        resty - Simple HTTP and
        REST client for Go inspired by Ruby rest-client.
      
 
    
    Servers
    Directly On Top Of A RMDB
    
      - 
        postgrest - Serve a
        fully RESTful API directly from an existing PostgreSQL database.
      
 
      - 
        MySQL HTTP plugin
        - Simple REST-like / CRUD server for any MySQL database.
      
 
      - 
        pREST - A fully RESTful API
        from any existing PostgreSQL database written in Go.
      
 
    
    Node.js
    
      - 
        node-restify -
        Framework specifically meant for REST API.
      
 
      - 
        Sails.js - Node.js Web framework
        embedding a command to generate automatically a REST API.
      
 
      - 
        mers - Express service
        exposing Mongoose finders as RESTful API.
      
 
      - 
        Baucis - Build scalable
        REST API based on your Mongoose entities.
      
 
      - 
        flatiron/resourceful
        - Isomorphic Resource engine for JavaScript.
      
 
      - 
        loopback - Powerful Node.js framework
        for creating APIs and easily connecting to backend data sources.
      
 
      - 
        Feathers - is a real-time,
        micro-service web framework that gives you control over your data via
        RESTful resources, sockets and flexible plug-ins.
      
 
      - 
        Expressa - Express
        middleware for creating APIs from JSON schemas with a simple admin
        editor and permissions model.
      
 
      - 
        rest-hapi -
        Generate RESTful API based on mongoose models that supports relational
        data.
      
 
      - 
        Nestjsx/crud - Generate
        CRUD controllers and services for RESTful API with NestJS and TypeORM.
      
 
    
    PHP
    
      - 
        Microrest -
        Micro-web application providing a REST API on top of any relational
        database.
      
 
      - 
        Negotiation -
        Content negotiation library.
      
 
      - 
        Drest - Library for
        exposing Doctrine entities as REST resource endpoints.
      
 
      - 
        Restler - Lightweight
        framework to expose PHP methods as RESTful web API.
      
 
      - 
        HAL - Hypertext
        Application Language (HAL) builder library.
      
 
      - 
        Apigility
        - API builder built with Zend Framework 2.
      
 
      - 
        phprest - Specialized
        REST microframework for PHP.
      
 
      - 
        Hateoas - PHP
        library to support implementing representations for HATEOAS REST web
        services.
      
 
      - 
        Fusio - Open source API
        management platform.
      
 
    
    Symfony2
    
    Python
    
      - 
        Django REST framework
        - Powerful and flexible toolkit that makes it easy to build Web APIs.
      
 
      - 
        django-tastypie - Creating
        delicious APIs for Django apps.
      
 
      - 
        flask-restful -
        Extension for Flask that adds support for quickly building REST APIs.
      
 
      - 
        flask-restless
        - Flask extension for generating ReSTful APIs for database models
        defined with SQLAlchemy (or Flask-SQLAlchemy).
      
 
      - 
        hug - Lightweight and fast API
        Framework.
      
 
      - 
        sandman - Automated
        REST APIs for existing database-driven systems.
      
 
      - 
        restless -
        Framework agnostic REST framework based on lessons learned from
        TastyPie.
      
 
      - 
        savory-pie - REST
        API building library (django, and others).
      
 
      - 
        Python Eve - Eve is an open source
        Python REST API framework designed for human beings. It allows to
        effortlessly build and deploy highly customizable, fully featured
        RESTful Web Services.
      
 
      - 
        Ramses - Makes
        RAML files executable by generating production-ready APIs from them at
        runtime.
      
 
      - 
        Flask-Potion -
        Flask-Potion is a powerful Flask extension for building RESTful JSON
        APIs. It also provides several Clients for easier access to the API.
      
 
      - 
        apistar - A smart Web
        API framework, designed for Python 3.
      
 
      - 
        Falcon - Falcon is a
        bare-metal Python web API framework for building high-performance
        microservices, app backends, and higher-level frameworks.
      
 
      - 
        FastAPI - FastAPI is a
        modern, fast (high-performance), web framework for building APIs with
        Python 3.6+ based on standard Python type hints. With automatic API
        documentation using Swagger UI and ReDoc, based on OpenAPI and JSON
        Schema.
      
 
    
    Ruby
    
      - 
        Grape - Opinionated
        micro-framework for creating REST-like APIs in Ruby.
      
 
      - 
        Rails -
        RailsGuides: Using Rails for API-only applications.
      
 
    
    Go
    
      - 
        gocrud: Go library
        to simplify creating, updating and deleting arbitrary depth structured
        data — to make building REST services fast and easy.
      
 
      - 
        go-json-rest -
        Thin layer on top of 
net/http that helps building RESTful
        APIs easily.
       
      - 
        sleepy - RESTful
        micro-framework written in Go.
      
 
      - 
        restit - Go micro
        framework to help writing RESTful API integration test.
      
 
      - 
        go-relax - Framework
        of pluggable components to build RESTful API’s.
      
 
      - 
        go-rest - Small and
        evil REST framework for Go.
      
 
      - 
        go-restful - A
        declarative highly readable framework for building restful API’s.
      
 
      - 
        Goat - Minimalistic REST API
        server in Go.
      
 
      - 
        Resoursea - REST
        framework for quickly writing resource based services.
      
 
      - 
        Zerver - Zerver is a
        expressive, modular, feature completed RESTful framework.
      
 
    
    Java
    
      - 
        RestExpress -
        Netty-based, highly performant, lightweight, container-less,
        plugin-extensible, framework that is ideal for microservice
        architectures.
      
 
      - 
        Vertx-Web -
        Vert.x-Web is a set of building blocks for building web applications
        with Vert.x, a toolkit for building reactive applications on the JVM.
      
 
      - 
        Dropwizard - A
        framework for developing ops-friendly, high-performance, RESTful web
        services.
      
 
    
    Scala
    
      - 
        Chaos - A lightweight
        framework for writing REST services in Scala.
      
 
    
    Haskell
    
      - 
        Rest for Haskell - This
        package allows you to create REST APIs in Haskell. These APIs can be run
        in different web frameworks. They can also be used to automatically
        generate documentation as well as client libraries.
      
 
    
    Testing
    Querying
    
      - 
        httpie - Command line
        HTTP client, far more dev-friendly than 
curl.
       
      - 
        Postman REST Client
        - Chrome extension essential to test manually REST API.
      
 
      - 
        resty - Little command line
        REST client that you can use in pipelines (bash or zsh).
      
 
      - 
        jq - Command line JSON
        processor, to use in combination with a command-line HTTP client like
        cURL.
      
 
      - 
        HttpMaster - GUI tool for
        testing REST APIs and services. Windows OS only.
      
 
      - 
        Http-console -
        Command line interface for HTTP that let you
        speak HTTP like a local
      
 
      - 
        HTTP Prompt - HTTP
        Prompt is an interactive command-line HTTP client featuring autocomplete
        and syntax highlighting, built on HTTPie and prompt_toolkit.
      
 
      - 
        rest-assured
        - Java DSL for easy testing of REST services.
      
 
      - 
        Insomnia -
        Cross-platform HTTP and GraphQL Client
      
 
      - 
        ExtendsClass
        - Make HTTP requests with a simple web-based HTTP client.
      
 
      - 
        TestMace - Cross-platform simple but
        powerful IDE for API automation testing.
      
 
      - 
        Milkman - Extensible
        cross-platform request/response workbench, not only for http calls.
      
 
    
    Mocking
    
      - 
        RequestBin - Inspect and debug
        webhook requests sent by your clients or third-party APIs.
      
 
      - 
        httpbin - HTTP request and response
        service - a/k/a Swiss Army Knife for HTTP.
      
 
      - 
        FakeRest - Patch
        XMLHttpRequest to fake a REST API client-side.
      
 
      - 
        json-server -
        Serve a REST API from fixture files using quick prototyping.
      
 
      - 
        Mocky.io - Free online service to
        create fake HTTP responses.
      
 
      - 
        Swagger API Mock
        - Mock RESTful API based on swagger schema
      
 
      - 
        Request Baskets
        - Service to collect HTTP requests and inspect them via RESTful API or
        web UI.
      
 
      - 
        DuckRails - Mock
        quickly & dynamically API endpoints.
      
 
      - 
        Mockoon - Easily create mock APIs
        locally. No remote deployment, no account required, open source.
      
 
    
    
      Public REST APIs To Use In Tests
    
    
      - 
        Deck of Cards API - Open API for
        simulating a deck of cards.
      
 
      - 
        ProgrammableWeb
        - The world’s largest API repository.
      
 
      - 
        Public APIS - Explore The
        Largest API Directory In The Galaxy.
      
 
      - 
        Marvel Comics API - Query
        characters, stories, events about Marvel superheroes.
      
 
      - 
        JSON Placeholder -
        Free online REST service that you can use whenever you need some fake
        data.
      
 
      - 
        APIs.guru - Wikipedia for Web APIs, each
        API has OpenAPI/Swagger description.
      
 
    
    Documentation
    
      - 
        Swagger - Documentation/querying web
        interface for REST APIs.
      
 
      - 
        API doc - Inline Documentation for
        RESTful web APIs.
      
 
      - 
        raml2html -
        Generates HTML documentation from a RAML file.
      
 
      - 
        ReDoc -
        OpenAPI/Swagger-powered three-panel documentation.
      
 
      - 
        Slate - Beautiful and
        responsive three-panel API documentation using Middleman.
      
 
      - 
        Optic - Maintain an
        accurate API specification without writing OpenAPI/Swagger. Works with
        any Stack
      
 
    
    API Gateway
    
      - 
        Kong - Scalable, distributed,
        and plugin oriented API gateway backed by Nginx.
      
 
      - 
        Tyk API Gateway -
        Lightweight API gateway with analytics logging, written in Go.
      
 
      - 
        API Umbrella - API
        management platform for exposing web services, with web interface and
        analytics, written in Lua.
      
 
      - 
        WSO2 API Management -
        API management tool with lightweight gateway and API lifecycle
        manangement, written in Java.
      
 
      - 
        Express Gateway
        - Microservices API Gateway built on top of ExpressJS (Node.js).
      
 
      - 
        KrakenD Ultra
        performant API Gateway with middleware. Written in Go.
      
 
    
    
    
      - 
        Runscope - Automated API
        Monitoring & Testing.
      
 
      - 
        Ping-API - Automated API Monitoring
        & Testing.
      
 
      - 
        import.io Magic - Create a REST
        API from any website in one click.
      
 
      - 
        Apiary - Collaborative design, instant
        API mock, generated documentation, integrated code samples, debugging
        and automated testing.
      
 
      - 
        Amazon API Gateway -
        Amazon API Gateway is a fully managed service that makes it easy for
        developers to create, publish, maintain, monitor, and secure APIs at any
        scale.
      
 
      - 
        Apigee - Apigee is the leading provider
        of API technology and services for enterprises and developers.
      
 
      - 
        3scale - Nginx based API gateway
        to integrate internal and external API services with 3scale’s API
        Management Platform.
      
 
      - 
        Assertible - Continuously test and
        monitor your APIs after deployments and across environments.
      
 
      - 
        Moesif - API Analytics for
        Debugging, Monitoring, and Usage Tracking for RESTful and GraphQL.
      
 
      - 
        Beeceptor - An HTTP inspecting,
        mocking and proxing service. Gives named endpoints for creating mock API
        endpoints and simulate responses.
      
 
    
    Miscellaneous
    
      - 
        react-admin - Add
        a ReactJS admin GUI to any RESTful API.
      
 
      - 
        ng-admin - Add an
        AngularJS admin GUI to any RESTful API.
      
 
      - 
        swagger-codegen
        - Auto generation of client libraries or server stubs given an OpenAPI
        specification (formerly known as the Swagger Specification).
      
 
      - 
        Lumber - Generate
        the admin interface of your application.
      
 
    
    License
    
      
    
    
      This work is licensed under a
      Creative Commons Attribution 4.0 International License.